import protomessage_pb2 # 直接import会找不到module
import json

class C_deviceDataBase:
    '''
    设备管理的类可以将方法份为基本的增删改查，将每个设备的信息存放在列表中，每个设备的具体内容按照字典的方式存放，构成基本的出局存储格式。
    '''
    device = {
        "device_ID":0,
        "socket_class":0,
        "device_Online":True,
        "device_IP":1,
        "device_port":1,
        "device_meaasge":0
    }

    
    def __init__(self):
        print("初始化数据管理类")
        self.device_list = [] # 储存设备的列表
        self.FLAG_GET_MES_YES = 2
        self.FLAG_GET_MES_NO = 3
    
    def device_add(self, device):
        '''
        增加数据
        '''
        print("C_deviceDatabase: 当前的储存的设备数量", len(self.device_list))
        if len(self.device_list) == 0 :
            self.device_list.append(device)
            print("设备添加成功")
        else:
            for aDevice_ID in self.device_list :
                if aDevice_ID['device_ID'] == device['device_ID']  :
                    self.device_list.remove(aDevice_ID)
                    self.device_list.append(device)
                    print("C_deviceDatabase", "删掉原来的，使用新的")
                else:
                    self.device_list.append(device)
                    print("设备添加成功")

    def device_find(self, device_ID):
        #print("device_find:::device_ID:", device_ID)
        '''
        根据输入的设备唯一指定的ID来查找设备 返回设备的所有信息
        '''
        for aDevice in self.device_list :
            if (aDevice["device_ID"] == device_ID):
                return aDevice
        return False
    
    def device_modify(self, device_ID, device_recv_falg):
        # 修改数据
        for aDevice in self.device_list :
            if (aDevice["device_ID"] == device_ID):
                try:
                    aDevice["device_recv_falg"] = device_recv_falg
                    #print("device_recv_falg", aDevice["device_recv_falg"])
                except:
                    print("错误: device_modify 没有找到设备ID")
                return True
        return False
    
    def device_get_recvFalg(self, Device_ID):
        '''
        设备需要接收数据的falg信号标志位
        '''
        aDevice = self.device_find(Device_ID)
        if aDevice != False :
            return aDevice["device_recv_falg"]
        else:
            return False

    def device_set_recvFlag(self, Device_ID, Device_recv_falg):
        if self.device_modify(device_ID=Device_ID, device_recv_falg=Device_recv_falg) :
            #print("device_set_recvFlag flag修改完成")
            return True
        else:
            print("错误: device_set_recvFlag 没有找到设备错误")
            return False

    def device_recvFlag_set(self, Device_ID):
        return self.device_set_recvFlag(Device_ID,self.FLAG_GET_MES_YES)

    def device_recvFlah_rest(self, Device_ID):
        return self.device_set_recvFlag(Device_ID,self.FLAG_GET_MES_NO)

    def device_delete(self, device_ID):
        # 删除数据
        for aDevice_ID in self.device :
            if aDevice_ID["device_ID"] == device_ID :
                self.device.remove(aDevice_ID)